package com.ruoyi.system.service.impl;

import com.ruoyi.system.mapper.AgoniVirtualStoreMapper;
import com.ruoyi.system.pojo.entity.VirtualStore;
import com.ruoyi.system.pojo.vo.HasStoreVO;
import com.ruoyi.system.service.IAgoniVirtualStoreService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class IAgoniVirtualStoreServiceImpl implements IAgoniVirtualStoreService {
    @Autowired
    private AgoniVirtualStoreMapper agoniVirtualStoreMapper;

    @Override
    public List<VirtualStore> listStores() {
        return agoniVirtualStoreMapper.listStores();
    }

    //TODO:插入新的商店


    @Override
    public int addStore(VirtualStore virtualStore) {
        agoniVirtualStoreMapper.addStore(virtualStore);
        return 0;
    }



    //根据设施id查询商店

    @Override
    public List<VirtualStore> getStoresByFacilityId(Long facilityId) {
        return agoniVirtualStoreMapper.getStoresByFacilityId(facilityId);
    }




    //判断判断当前用户是否存在商店

    @Override
    public HasStoreVO hasStoreByUserId(Long userId) {
        Boolean hasStore = false;
        HasStoreVO hasStoreVO = null;
        VirtualStore virtualStore = agoniVirtualStoreMapper.getStoreByUserId(userId);
        if (virtualStore != null) {
            hasStore = true;
            hasStoreVO = HasStoreVO.builder()
                    .hasStore(hasStore)
                    .name(virtualStore.getName())
                    .description(virtualStore.getDescription()) // 商店描述
                    .location(virtualStore.getLocation()) // 商店位置
                    .owner(virtualStore.getOwner()) // 商店所有者
                    .operator(virtualStore.getOperator()) // 商店经营者
                    .contactNumber(virtualStore.getContactNumber()) // 客服电话
                    .operatingHours(virtualStore.getOperatingHours()) // 经营时间
                    .storeType(virtualStore.getStoreType()) // 商店类型
                    .rating(virtualStore.getRating()) // 商店评分
                    .storeFormat(virtualStore.getStoreFormat()) // 商店格式
                    .isOperating(virtualStore.getIsOperating()) // 是否在营业
                    .createdAt(virtualStore.getCreatedAt()) // 创建时间
                    .updatedAt(virtualStore.getUpdatedAt()) // 更新时间
                    .deletedAt(virtualStore.getDeletedAt()) // 删除时间
                    .userId(virtualStore.getUserId()) // 用户标识
                    .facilityId(virtualStore.getFacilityId()) // 关联的设施id
                    .image(virtualStore.getImage()) // 商店图片
                    .build();
        } else {
            hasStoreVO = HasStoreVO.builder()
                    .hasStore(hasStore)
                    .description(null) // 或者其他默认值
                    .name(null)
                    .location(null) // 或者其他默认值
                    .owner(null) // 或者其他默认值
                    .operator(null) // 或者其他默认值
                    .contactNumber(null) // 或者其他默认值
                    .operatingHours(null) // 或者其他默认值
                    .storeType(null) // 或者其他默认值
                    .rating(null) // 或者其他默认值
                    .storeFormat(null) // 或者其他默认值
                    .isOperating(null) // 或者其他默认值
                    .createdAt(null) // 或者其他默认值
                    .updatedAt(null) // 或者其他默认值
                    .deletedAt(null) // 或者其他默认值
                    .userId(null) // 或者其他默认值
                    .facilityId(null) // 或者其他默认值
                    .image(null) // 或者其他默认值
                    .build();
        }

        return hasStoreVO;
    }

    //创建商店


    @Override
    public Boolean createStore(VirtualStore virtualStore,Long userId) {
        virtualStore.setUserId(Math.toIntExact(userId));
        virtualStore.setRating(0.0);
      int result = agoniVirtualStoreMapper.createStore(virtualStore);
      if ( result == 1 )
          return true;
      else
          return false;

    }
}
